package com.example.leetcode.trainingcamp.week1.practice2;

/**
 * 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
 *
 * 你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
 *
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/rotate-image
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test48 {
    /**
     * 两次交换即可
     *
     *      5   1   9   11                   11   9    1    5                      15     13     2     5
     *      2   4   8   10          ------   10   8    4    2    在对角线交换即可     14      3     4     1
     *      13  3   6    7          ------   7    6    3    13                     12      6     8     9
     *      15  14  12   16                  16   12   14   15                     16      7     10    11
     *
     *
     * @param matrix
     */
    public void rotate(int[][] matrix) {
        int len = matrix.length-1;
        for (int i = 0;i<len+1;i++){
            int left = 0,right = len;
            while (left<right){
                int temp = matrix[i][left];
                matrix[i][left] = matrix[i][right];
                matrix[i][right] = temp;
                left++;
                right--;
            }
        }
        for (int i=0;i<len;i++){
            for (int j = 0;j<len-i;j++){
                int t = matrix[i][j];
                matrix[i][j] = matrix[len - j][len - i];
                matrix[len - j][len - i] = t;

            }
        }
    }
}
